// 引入发送请求的方法
import {
    request
} from "../../request/index.js";
Page({
    /**
     * 一、页面的初始数据 onLoad  onShow
     *    1、先获取本地存储中的地址数据
     *    2、把数据 设置给data中的一个变量
     * 二、onShow
     *    1、获取缓存中的购物车数组
     *    2、把购物车数据 填充到data中
     * 三、全选的实现
     *    1、onShow 先获取缓存中的购物车数组
     *    2、根据购物车中的商品数据 所有的商品都被选中 checked=true时 全被选中
     * 四、总价格和总数量
     *    1、必须要时选中的商品，才拿它来计算
     *    2、获取购物车数组
     *    3、遍历购物车数组
     *    4、 判断商品是否被选中
     *    5、总价格= +=商品的单价*商品的数量
     *    6、总数量= +=商品的数量
     *    7、把总价格和总数量 设置到data中即可
     * 五、商品的选中
     *    1、绑定change事件
     *    2、获取到被修改的商品对象
     *    3、商品对象的选中状态 取反
     *    4、重新填充回data中和缓存中
     *    5、重新计算全选、总价格 总数量...
     *
     */
    data: {
        // address:{},
        // rightContent:["善水左岸汉堡面包","善水左岸汉堡面包","善水左岸汉堡面包","善水左岸汉堡面包"],
        cart: [],
        cart_web: [],
        allChecked: false,
        totalPrice_min: 0,
        totalPrice_max: 0,
        totalNum: 0,

        userobjs_adress: {},

        add_index: {},
        red_index: {},
        shop_List: {},
        scollHeight: wx.getSystemInfoSync().windowHeight - 100,
    },
    onShow() {
        /* let scollHeight = ;
            console.log('scollHeight', scollHeight); */
        // 获取storge里面是否有注册信息userobjs  因为想要用地址判断
        let login_obj = wx.getStorageSync("login_obj");
        console.log("页面加载调用缓存注册信息", login_obj);
        this.setData({
            login_obj,
            /* scollHeight */
        });

        // 一web、1、获取web缓存中的收货地址信息
        // const address=wx.getStorageSync("address");

        // 发送异步请求获取 购物车数据  请求用promise封装
        var reqTask = wx.request({
            url: "https://yunbao.greatforest.com.cn/ruoyi-admin/gwc/showGwc?customer=" + this.data.login_obj.userName,
            // url: "http://192.168.3.144:8080/gwc/showGwc?customer="+ this.data.login_obj.userName,
            // data: {},
            // header: {'content-type':'application/json'},
            method: "POST",
            // dataType: 'json',
            // responseType: 'text',
            success: (result) => {
                console.log("购物车数据", result);
                let cart_web = result.data.data;
                console.log("赋值后购物车数据", cart_web);

                // let cart_web = this.cart_goods
                // console.log(this.swipers)
                this.setData({
                    cart_web,
                });
                console.log("查看是否有", cart_web);
                // 调用下面的封装
                this.setCart(cart_web);
            },
        });

        // 二 本地、1、获取本地缓存中的购物车 数组 数据
        const cart = wx.getStorageSync("cart") || [];
        // 获取登录信息，，按照店铺名加购物车
        const logininf = wx.getStorageSync("logininf") || [];
        this.setData({
            // address,
            cart,
            logininf,
        });


        // 购物车为空下部推荐商品
        request({
                url: 'https://yunbao.greatforest.com.cn/ruoyi-admin/qt/suiji',
                method: "GET"
            })
            .then(res => {
                // 主页请求的商品数据
                console.log(res);
                this.Gods = res.data.data;
                console.log("返回的常用商品", this.Gods);
                // 遍历每一个数据
                let shop_List = this.Gods
                //  let shop_List_Name = this.Gods.map(v=> v.spName)
                //  let shop_List_Guige = this.Gods.map(v=> v.spGuige)
                //  let shop_List_Guige1 = this.Gods.map(v=> v.spGuige1)
                //  console.log(shop_List_Name)
                //把他放到data中
                this.setData({
                    shop_List,
                    // shop_List_Name,
                    // shop_List_Guige,
                    // shop_List_Guige1
                })
            })

        // // 调用下面的封装
        // this.setCart(cart_web);
    },

    //1、点击收货地址
    handleChooseAdress() {
        console.log("触发");
        //2、小程序内置api直接调用（若取消就不能调用了，所以在此之前先获取权限）
        // wx.chooseAddress({
        //   success: (result) => {
        //     console.log(result)
        //   },
        //   // fail: () => {},
        //   // complete: () => {}
        // });

        // 2.获取 用户对小程序 所授予 获取地址的 权限状态 scope
        // （1）假设 用户 点击获取收货地址的提示框 确定 scope 值 true（调用成功）
        // 需要调取的数据(authSetting / scope.address)
        // （2）假设用户重来没有调用过 收货的api scope 为undefine（调用成功）
        // （3）假设 用户 点击取消 scope值为false（不能调用）
        // 此刻要诱导用户自己打开 授权设置页面（wx.openSetting） 重新给予获取权限
        // 再获取收货地址
        //  (4) 把收货地址 存入到本地存储中

        // 1、获取权限状态
        wx.getSetting({
            success: (result) => {
                console.log(result);
                // 获取后赋值 当有怪异的属性名时用[""]包起来
                const scopeAddress = result.authSetting["scope.address"];
                if (scopeAddress === true || scopeAddress === undefined) {
                    // 2、调用收货地址
                    wx.chooseAddress({
                        success: (result1) => {
                            console.log(result1);

                            // 储存到缓存中
                            wx.setStorageSync("address", result1);
                        },
                        // fail: () => {},
                        // complete: () => {}
                    });
                } else {
                    // 3.用户如果拒绝权限 诱导他打开授权页面
                    wx.openSetting({
                        success: (result2) => {
                            // 4、可以调用收货地址代码
                            wx.chooseAddress({
                                success: (result3) => {
                                    console.log(result3);
                                },
                            });
                        },
                        // fail: () => {},
                        // complete: () => {}
                    });
                }
            },
            // fail: () => {},
            // complete: () => {}
        });
    },

    // 一、复选框的更改
    handItemChange(e) {
        // 1、获取选中的商品id
        const e_cid = e.currentTarget.dataset.id;
        console.log(e);
        console.log(e_cid);
        // 2、获取购物车数组
        let {
            cart_web
        } = this.data;
        //3、找到被修改的商品对象
        let index = cart_web.findIndex((v) => v.spGwcId === e_cid);
        // 4、选中状态取反
        cart_web[index].checked = !cart_web[index].checked;
        ///5、把购物车数据重新设置回data中  缓存中

        // 调用下面的封装
        this.setCart(cart_web);
    },

    // 封装好的 设置购物车状态的同时 重新计算 底部工具栏的数据 全选 总价格 购买总数
    setCart(cart_web) {
        // this.setData({
        //   cart
        // })

        // 二、再次计算底部总价格总数量
        // 计算全选
        // every数组方法 会遍历 会接收一个回调函数 如果每一个回调函数都返回true， every方法返回true
        // 只要 有一个回调函数返回false 那么就不再循环执行，直接返回false
        // 如果是空数组 调用every，返回值也是true
        const allChecked = cart_web.length ?
            cart_web.every((v) => v.checked) :
            false;
        // 为了节约性能最后还是在计算总价格里面判断了84行

        // 在计算这顺便判断全选框
        // let allChecked = true;
        // 总价格 总数量
        let totalPrice_min = 0;
        let totalPrice_max = 0;
        let totalNum = 0;

        cart_web.forEach((v) => {
            if (v.checked) {
                // totalPrice_min += v.spGwcSpCount * v.spGwcSpMinprice;
                totalPrice_min += v.spGwcSpCount * v.spGwcSpMindj;
                // totalPrice_min += v.spGwcSpMinprice;
                totalPrice_max += v.spGwcSpCount * v.spGwcSpMaxdj;
                // totalPrice_max += v.spGwcSpMaxprice;
                totalNum += v.spGwcSpCount;
            } else {
                // allChecked = false;
            }
        });
        // 判断数组是否为空
        // allChecked = cart.length != 0 ? allChecked : false;
        this.setData({
            allChecked,
            totalPrice_min,
            totalPrice_max,
            totalNum,
            // cart,

            cart_web,
        });
        wx.setStorageSync("cart_web", this.data.cart_web);
        console.log("是否cart_web放入storge", cart_web);
    },

    // 底部全选功能
    handleItemAllCheck(e) {
        console.log(e);
        // 1、获取data中的数据
        let {
            cart_web,
            allChecked
        } = this.data;
        // 2、修改值
        allChecked = !allChecked;
        // 3、循环修改cart数组中的  商品的选中状态
        cart_web.forEach((v) => (v.checked = allChecked));
        // 把修改后的值再放回data和缓存中
        this.setCart(cart_web);
    },

    // 点击加1
    handleItemNumEdit_add(e) {
        console.log("点击加1");
        // 1、获取传过来的参数
        const {
            operation,
            id
        } = e.currentTarget.dataset;

        console.log(operation, id);
        // console.log("加1按钮", e)

        // 2、获取购物车数组
        let {
            cart_web
        } = this.data;

        // 3、找到需要修改的商品索引
        const index = cart_web.findIndex((v) => v.spGwcId === id);
        console.log("添加获取到的index", index);

        // 3.1判断是否要执行删除
        if (cart_web[index].spGwcSpCount === 1 && operation === -1) {
            // 发送异步请求 把数据发送后端审核  请求用promise封装
            // wx.request({
            //   url: 'https://yunbao.greatforest.com.cn/ruoyi-admin/gwc/delectGwc',
            //   dataType: 'json',
            //   responseType: 'text',
            //   data: [{
            //     "sp_gwc_customer": "天猫",
            //     "sp_gwc_sp_bh": this.data.cart_web[index].spGwcSpBh,

            //   }],
            //   method: "POST",
            //   success: function (e) {
            //     //成功回调
            //     console.log(e)
            //     wx.showToast({
            //       title: e.data.msg,
            //       duration: 4000,
            //       success: function () {
            //         // wx.navigateTo({
            //         //   url: '/pages/login/index',
            //         // })
            //       }
            //     })
            //   }
            // })

            // 发送异步请求 把数据发送后端审核  请求用promise封装
            wx.request({
                url: "https://yunbao.greatforest.com.cn/ruoyi-admin/gwc/delectGwc",
                dataType: "json",
                responseType: "text",
                data: [{
                    sp_gwc_customer: "天猫",
                    sp_gwc_sp_bh: this.data.cart_web[index].spGwcSpBh,
                }, ],
                method: "POST",
                success: function (e) {
                    //成功回调
                    console.log(e);
                    wx.showToast({
                        title: e.data.msg,
                        duration: 4000,
                        success: function () {
                            // wx.navigateTo({
                            //   url: '/pages/login/index',
                            // })
                        },
                    });
                },
            });

            // 当数量减到0时,弹窗提示
            // wx.showModal({
            //   title: '提示',
            //   content: '您是否要删除？',
            //   success: (res) => {
            //     if (res.cancel) {
            //       console.log('用户点击取消')
            //    } else {
            //     console.log('res',res)
            //     if (res.confirm) {
            //       console.log('cart_web',cart_web)
            //       // 删除商品
            //       cart_web.splice(index, 1);
            //       console.log("零时删除商品")
            //       // 删除接口请求

            //       // 发送异步请求 把数据发送后端审核  请求用promise封装
            //       wx.request({
            //         url: 'https://yunbao.greatforest.com.cn/ruoyi-admin/gwc/delectGwc',
            //         dataType: 'json',
            //         responseType: 'text',
            //         data: [{
            //           "sp_gwc_customer": "天猫",
            //           "sp_gwc_sp_bh": this.data.cart_web[index].spGwcSpBh,

            //         }],
            //         method: "POST",
            //         success: function (e) {
            //           //成功回调
            //           console.log(e)
            //           wx.showToast({
            //             title: e.data.msg,
            //             duration: 4000,
            //             success: function () {
            //               // wx.navigateTo({
            //               //   url: '/pages/login/index',
            //               // })
            //             }
            //           })
            //         }
            //       })

            //       this.setCart(cart_web);

            //     }
            //    }
            //   }
            // })
        } else {
            // 4、进行修改数量
            // cart[index].num += -1;
            cart_web[index].spGwcSpCount += operation;

            // 5、设置回缓存和data中 封装中计算
            this.setCart(cart_web);

            // web中的cart也要加1
            request({
                url: "https://yunbao.greatforest.com.cn/ruoyi-admin/gwc/zjSpToGwc?customer=天猫&bh=" +
                    this.data.cart_web[index].spGwcSpBh + "&guige=" + this.data.cart_web[index].spGwcSpGuige,
                // url: "http://192.168.3.45:8080/gwc/zjSpToGwc?customer=天猫&bh=EfoP20210623162924",
                method: "POST",
            }).then((res) => {
                // 主页请求的商品数据
                console.log(res);
                // this.Gods=res.data.data;
                // 遍历每一个数据
                // let shop_List = this.Gods

                //  let shop_List_Guige1 = this.Gods.map(v=> v.spGuige1)
                //  console.log(shop_List_Name)

                // 按照编号bh查找对应购物车数据中的商品index   再根据index查找此商品的nums购物车数量+1  再填加回数据data中
                // this.data.cart_goods_item.findIndex(v=>v.spGwcSpBh===)

                //把他放到data中
                this.setData({});
            });
        }
    },

    // 点击减1
    handleItemNumEdit_red(e) {
        console.log("减1按钮");
        // 1、获取传过来的参数
        const {
            operation,
            id
        } = e.currentTarget.dataset;

        console.log(operation, id);
        // console.log("加1按钮", e)

        // 2、获取购物车数组
        let {
            cart_web
        } = this.data;

        // 3、找到需要修改的商品索引
        const index = cart_web.findIndex((v) => v.spGwcId === id);
        console.log(index);

        // this.setData({
        //   red_index:index
        // })
        // 3.1判断是否要执行删除
        if (cart_web[index].spGwcSpCount === 1 && operation === -1) {
            // 当数量减到0时,弹窗提示
            wx.showModal({
                title: "提示",
                content: "您是否要删除？",
                success: (res) => {
                    if (res.confirm) {
                        console.log("进入success");

                        // 发送异步请求 把数据发送后端审核  请求用promise封装
                        wx.request({
                            url: "https://yunbao.greatforest.com.cn/ruoyi-admin/gwc/delectGwc",
                            dataType: "json",
                            responseType: "text",
                            data: [{
                                sp_gwc_customer: "天猫",
                                sp_gwc_sp_bh: cart_web[index].spGwcSpBh,
                                sp_gwc_sp_guige: cart_web[index].spGwcSpGuige
                            }, ],
                            method: "POST",
                            success: function (e) {
                                //成功回调
                                console.log("后端删除商品", e);
                                wx.showToast({
                                    title: e.data.msg,
                                    duration: 4000,
                                    success: function () {
                                        // wx.navigateTo({
                                        //   url: '/pages/login/index',
                                        // })
                                    },
                                });
                            },
                        });

                        // 删除商品
                        cart_web.splice(index, 1);
                        this.setCart(cart_web);
                    } else if (res.cancel) {
                        console.log("用户点击取消");
                    }
                },
            });
        } else {
            // 4、进行修改数量
            // cart[index].num += 1;
            cart_web[index].spGwcSpCount += operation;

            // 5、设置回缓存和data中 封装中计算
            this.setCart(cart_web);

            // web中的cart也要加1
            request({
                url: "https://yunbao.greatforest.com.cn/ruoyi-admin/gwc/scSpFromGwc?customer=天猫&bh=" +
                    this.data.cart_web[index].spGwcSpBh + "&guige=" + this.data.cart_web[index].spGwcSpGuige,
                method: "POST",
            }).then((res) => {
                // 主页请求的商品数据
                console.log(res);
                // this.Gods=res.data.data;
                // 遍历每一个数据
                // let shop_List = this.Gods

                //  let shop_List_Guige1 = this.Gods.map(v=> v.spGuige1)
                //  console.log(shop_List_Name)

                // 按照编号bh查找对应购物车数据中的商品index   再根据index查找此商品的nums购物车数量+1  再填加回数据data中
                // this.data.cart_goods_item.findIndex(v=>v.spGwcSpBh===)

                //把他放到data中
                this.setData({});
            });
        }

        // request({
        //     url: "http://192.168.3.45:80/gwc/zjSpToGwc?customer=天猫&bh=sjCd20210623144704",
        //     method: "POST"
        //   })
        // .then(res => {
        // 主页请求的商品数据
        // console.log(res);
        // this.Gods=res.data.data;
        // 遍历每一个数据
        // let shop_List = this.Gods

        //  let shop_List_Guige1 = this.Gods.map(v=> v.spGuige1)
        //  console.log(shop_List_Name)

        // 按照编号bh查找对应购物车数据中的商品index   再根据index查找此商品的nums购物车数量+1  再填加回数据data中
        // this.data.cart_goods_item.findIndex(v=>v.spGwcSpBh===)

        //把他放到data中
        //   this.setData({

        //   })

        // })
    },

    // 点击提交购物车数量、
    handlePay() {
        // 先获取地址和商品数据，，再后作为判断条件
        const {
            adress,
            totalNum
        } = this.data;
        // 1、判断收货地址
        // if (!adress.userName) {
        //   wx.showToast({
        //     title: '您还没有选择收货地址',
        //     icon: 'none',
        //     image: '',
        //     duration: 1500,
        //     mask: false,
        //     success: (result) => {

        //     },
        //     fail: () => {},
        //     complete: () => {}
        //   });
        //   return;
        // }

        //判断用户用没有选购商品
        if (totalNum === 0) {
            wx.showToast({
                title: "您还没有选择商品",
                icon: "none",
                image: "",
                duration: 1500,
                mask: false,
                success: (result) => {
                    // 跳转到 支付页面
                    // wx.navigateTo({
                    //   url: '/pages/confirm_order2/index',
                    // })
                    // // 发送异步请求 把数据发送后端审核  请求用promise封装
                    // wx.request({
                    //   url: 'https://yunbao.greatforest.com.cn/ruoyi-admin/dd/addSpDd',
                    //   dataType: 'json',
                    //   responseType: 'text',
                    //   // 提交的是web_cartz中的购物车订单（（但是无法提交单选框选中的订单））
                    //   data: this.data.cart_web,
                    //   // [{
                    //   //     "customer": "天猫",
                    //   //     "date": "周一",
                    //   //     "name": "天猫",
                    //   //     "address": "三七区",
                    //   //     "phone": 123456,
                    //   //     "spbh": "sjCd20210623144704"
                    //   //   },
                    //   //   {
                    //   //     "customer": "天猫",
                    //   //     "date": "周一",
                    //   //     "name": "天猫",
                    //   //     "address": "三七区",
                    //   //     "phone": 123456,
                    //   //     "spbh": "ReBE20210623150539"
                    //   //   }
                    //   // ],
                    //   method: "POST",
                    //   success: function (e) {
                    //     //成功回调
                    //     console.log("提交请求信息",e)
                    //     wx.showToast({
                    //       title: e.data.msg,
                    //       duration: 4000,
                    //       success: function () {
                    //         // wx.navigateTo({
                    //         //   url: '/pages/login/index',
                    //         // })
                    //       }
                    //     })
                    //   }
                    // })
                },

                fail: () => {},
                complete: () => {},
            });
            return;
        }

        // // 跳转到 支付页面
        wx.navigateTo({
            url: "/pages/confirm_order2/index",
        });
    },
});